package com.zjj.learn.javaplus.pkg03.demo304;

public class TestDemo304_1 {

    public static void main(String[] args) {
        Employee employee = new Employee() {

            @Override
            public void work() {
                System.out.println("工作方法");
            }

            @Override
            public void meet() {
                System.out.println("开会方法");
            }
        };

        employee.meet();
        employee.work();
    }

    /**
     * 课后作业
     *
     * 一、概念题
     *    1、什么叫做多态，条件是什么？
     *       答：多态是相同类型的对象在执行统一操作是，根据具体对象状态不同所表现的特征是不一样的
     *          条件：继承或者实现；必须有方法的重写
     *
     *    2、多态带来了什么好处？
     *       提高代码的可拓展性
     *
     *    3、使用多态需要注意什么？
     *       父类引用不能调用子类特有的方法需要遵循向下转型；
     *
     * 二、语法练习
     *    语法点：匿名内部类使用
     *    根据需求，完成如下代码，并在测试类中进行测试。
     *        员工类 Employee:
     *             属性: 姓名 工号 工资
     *             抽象方法: 工作(work), 开会(meet)
     *   使用匿名内部类方式创建一个员工类,并调用其工作和开会的功能
     * 答案见：
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Employee}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.TestDemo304_1#main(String[])}
     *
     * 三、语法练习
     *     语法点：匿名内部类使用
     *     请编写一个接口Phone,两个抽象方法,call() sendMessage() 使用匿名内部类的方式调用 call 和 sendMessage方法
     * 答案见：
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Phone}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.TestDemo304_2#main(String[])}
     *
     * 四：语法练习
     *     语法点：匿名内部类使用
     *     请编写一个接口 Player,包含 playBasketball,playPingpong  2个抽象方法,在测试类中使用匿名 内部类方式创建
     *     对象,并调用这 2 个功能
     * 答案见：
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Player}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.TestDemo304_3#main(String[])}
     *
     * 五、语法练习
     *     语法点：接口，多态
     *     定义一个父类 Animal 包含name,weight属性和一个抽象的eat方法, 定义两个子类Dog和Cat,Dog特有方法
     *        lookHome,Cat特有方法catchMouse;并且重写eat方法,Dog吃骨头,Cat吃鱼 要求:使用多态形式创建Dog和Cat对
     *        象,调用eat方法,并且使用向下转型,如果是Cat类型调用catchMouse功能,如果是Dog类型调用lookHome功能
     *  按步骤编写代码，效果如图所示：
     *     狗吃骨头
     *     猫吃鱼
     *     狗看家
     *     猫捉老鼠
     *
     * 答案见：
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Animal}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Dog}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Cat}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.TestDemo305_4}
     *
     * 六、需求实现
     *  请使用代码描述:
     *     学生都有年龄和姓名属性,有吃饭(学生餐)和学习方法,但是有部分学生会打篮球
     *     老师都有年龄和姓名属性,有吃饭(工作餐)和讲课方法,但是有部分老师会打篮球
     *     定义一个方法模拟去打篮球,只要会打篮球的人都可以传入. (提示通过在测试类中定义一个方法参数为接口)
     *
     *  实现效果为：
     *    年龄为 21 岁的学生：王中王 在打篮球
     *    年龄为 35 岁的老师：大姚 在打篮球
     *    =====================
     *    吃学生餐
     *    吃工作餐
     * 答案见：
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Person}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Sport}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Student}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.Teacher}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.SportStudent}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.SportTeacher}
     * {@link com.zjj.learn.javaplus.pkg03.demo304.TestDemo306_5}
     * 类之间的继承实现关系如下图：
     *
     * todo：还有两个题没有做
     **/
}
